import { fileURLToPath, URL } from 'node:url'
import { createHtmlPlugin } from 'vite-plugin-html'
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import VUE_APP_TYPE from './VUE_APP_TYPE'

// https://vitejs.dev/config/
export default defineConfig(({ command, mode }) => {
    // 根据当前工作目录中的 `mode` 加载 .env 文件
    // 设置第三个参数为 '' 来加载所有环境变量，而不管是否有 `VITE_` 前缀。
    const env: VUE_APP_TYPE = loadEnv(mode, process.cwd(), 'VUE_APP') as any

    const config = {
        base: ((undefined === env.VUE_APP_FRONT_CONTEXT_NAME) ? '/' : ('/' + env.VUE_APP_FRONT_CONTEXT_NAME + '/')),
        build: {
            outDir: env.VUE_APP_FRONT_ROOT_PATH + '/' + env.VUE_APP_FRONT_CONTEXT_NAME,
        },
        plugins: [
            vue(),
            vueJsx(),
            createHtmlPlugin({
                inject: {
                    data: {
                        title: env.VUE_APP_NAME,
                        buildTime: new Date().toLocaleString()
                    }
                }
            })
        ],
        resolve: {
            alias: {
                '@': fileURLToPath(new URL('./src', import.meta.url))
            }
        },
        define: {
            __APP_ENV__: env
        },
        css: {
            preprocessorOptions: {
                scss: {
                    additionalData: '@use "./src/z-admin/style/inject.scss" as *;' // 添加公共样式

                }
            }
        },
    }

    console.log(config)
    return config
})
